<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Mr.UBKey
 * Date: 27/10/2011
 * Time: 13:53
 * To change this template use File | Settings | File Templates.
 */
class Slide_ControlPanelController extends XPHP_Controller
{
    /**
     * Danh sách các slide có trong hệ thống
     * @var array
     */
    private $slides;

    public function _init()
    {
        $this->loadLayout('ControlPanel/XAdmin');
        //Lấy ra danh sách slide
        $slide = XPHP_Config::getConfig("modules > slide > slide");
        if (!isset($slide['@name'])) {
            foreach ($slide as $sl) {
                $this->slides[$sl['@type']] = $sl['@name'];
            }
        }
        else
        {
            $this->slides[$slide['@type']] = $slide['@name'];
        }
    }

    #[Authorize(roles = 'Administrator')]
    public function indexAction()
    {
        $this->view->slides = $this->slides;
        return $this->view();
    }

    #[Authorize(roles = 'Administrator')]
    public function listAction()
    {
        //Lấy ra menu type
        $type = (int)$this->params[0];
        //Lấy ra danh sách các menu
        $model = new Areas_Slide_Models_Slide();
        $slides = $model->getSlides($type);
        $this->view->slides = $slides;
        //Lấy ra các thông tin hiển thị
        $this->view->heading = $this->slides[$type];
        $this->view->navType = $type;
        return $this->view();
    }

    #[Authorize(roles = 'Administrator')]
    public function listPost()
    {
        //Lưu sort của category
        $order = 1;
        //List order category
        $list = $this->params['list'];
        foreach ($list as $id => $parent_id) {
            $model = new Areas_Slide_Models_Slide($id);
            $model->sort = $order;
            //Cập nhật
            $model->update();
            //Tăng lên
            $order++;
        }
        return $this->json(
            array('success' => true, 'message' => 'Cập nhật thứ tự menu thành công'));
    }

    #[Authorize(roles = 'Administrator')]
    public function editAction()
    {
        $id = $this->params[0];
        $model = new Areas_Slide_Models_Slide($id);
        //Lấy ra type và heading
        $heading = $this->slides[$model->type];
        $this->view->heading = $heading;
        return $this->view($model);
    }

    #[Authorize(roles = 'Administrator')]
    public function editPost(Areas_Slide_Models_Slide $model)
    {
        if ($this->model->validate()) {
            if ($this->model->update())
                return $this->json(
                    array('success' => true,
                         'message' => 'Cập nhật ảnh slide thành công'));
            else
                return $this->json(
                    array('success' => false,
                         'message' => 'Xảy ra lỗi khi thêm ảnh vào slide'));
        }
        else
            return $this->json(
                array('success' => false,
                     'message' => 'Thông tin ảnh nhập vào chưa hợp lệ'));
    }

    #[Authorize(roles = 'Administrator')]
    public function createAction()
    {
        $type = $this->params[0];
        $this->view->navType = $type;
        $this->view->heading = $this->slides[$type];

        $model = new Areas_Slide_Models_Slide();
        return $this->view($model);
    }

    #[Authorize(roles = 'Administrator')]
    public function createPost(Areas_Slide_Models_Slide $model)
    {
        if ($this->model->validate()) {
            if ($this->model->insert())
                return $this->json(
                    array('success' => true,
                         'message' => 'Thêm ảnh vào slide thành công'));
            else
                return $this->json(
                    array('success' => false,
                         'message' => 'Xảy ra lỗi khi thêm ảnh vào slide'));
        }
        else
            return $this->json(
                array('success' => false,
                     'message' => 'Thông tin ảnh nhập vào chưa hợp lệ'));
    }

    #[Authorize(roles = 'Administrator')]
    public function deletePost(Areas_Slide_Models_Slide $model)
    {
        $this->model->delete();
        return $this->json(
                array('success' => true,
                     'message' => 'Xóa ảnh thành công'));
    }
}
